Traditional compute elements are typically deployed on physical or virtual machines, which in turn are also deployed on physical servers to which an administrator may have access to. A newer and alternative computing model is the cloud computing model. In cloud computing, whether private or public, the infrastructure is provided as a service. Physical or virtual machines enable working with local storage devices however the compute elements, such as Amazon EC2, are typically ephemeral, meaning that following shut down (e.g., to temporary cut down operational costs, during maintenance, power failure, load balancing, etc.) all local data is typically inaccessible and thus lost. This is true even if the local storage device is persistent by nature. Some complementary services, such as Amazon elastic block service (EBS), provide non-ephemeral storage options however these options are all limited in their performance and costly on bandwidth.
Some distributed systems, such as web server farms, consist of many compute elements that should all have the same data set, such as content, libraries etc. The problem of distributing such data to many compute elements grows with time, because public cloud economics allow for faster growth in the number of compute elements. Also, due to constantly changing business needs there is an increase in the frequency of updating and adoption of continuous deployment methodologies. Such deployments may benefit from copying a compute element state.
Compute element state replication and migration may be done by using the slow shared services such as Amazon EBS, or by copying the entire data from a source compute element device. However, these processes are typically inefficient. Moreover, copying from one device or service to another may be impossible in newly emerging memory based file systems in which data that is held in a memory based tier must be moved to a block based device or system.